package com.itheima.controller;

import com.itheima.annotation.Log;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
@Slf4j
@RequestMapping ("/depts")
@RestController
public class DeptController {
    //日志对象或者加注解
//    private static final Logger log = LoggerFactory.getLogger(DeptController.class);
    @Autowired
    private DeptService deptService;

    /**
     * 1 查询所有部门
     */
    @GetMapping
//    @RequestMapping(value = "/depts",method = RequestMethod.GET)
    public Result list() {
        log.info("查询部门数据");
//        System.out.println("查询部门数据");
        List<Dept> deptlist = deptService.findAll();
        return Result.success(deptlist);
    }
    //方案一=======================删除部门数据基于httpservletrequest
//    @DeleteMapping("/depts")
//    public Result delete(HttpServletRequest request){
//        String id = request.getParameter("id");
//        int i = Integer.parseInt(id);
//        System.out.println("删除部门数据"+i);
//        return Result.success();
//    }
    //方案二@RequestParam
//    @RequestParam("id"
//    注意事项=====================必须传递参数(required = true)不需要可以设置为falsae
//    @DeleteMapping("/depts")
//    public Result delete(@RequestParam(value = "id") Integer deptId){
//        System.out.println("删除部门数据"+deptId);
////        deptService.delete(id);
//        return Result.success();
//    }

    //方案三如果请求参数名与形参名一致，可以省略@RequestParam("id")

    /**
     * 2 删除部门
     */
    @Log
    @DeleteMapping
    public Result deleteById(Integer id) {
        log.info("删除部门数据{}",id);
        deptService.deleteById(id);
        return Result.success();
    }


    /**
     * 3 新增部门
     */
    @Log
    @PostMapping
    public Result add(@RequestBody Dept dept) {
        log.info("新增部门数据{}",dept);
//        System.out.println("新增部门数据" + dept);
        deptService.add(dept);
        return Result.success();
    }

    /**
     * 4 查询部门通过id
     * 获取的是路径参数
     * 使用@PathVariable获取,通过{...}来标识
     * 路径参数参数名和形参名一致，可以省略value属性值
     */
    @GetMapping("/{id}")
    public Result findById(@PathVariable Integer id) {
        log.info("查询部门数据{}",id);
//        System.out.println("查询部门数据" + id);
        Dept dept = deptService.findById(id);
        return Result.success(dept);
    }


    /**
     * 修改部门
     */
    @Log
    @PutMapping
    public Result update(@RequestBody Dept dept) {
        log.info("修改部门数据{}",dept);
//        System.out.println("修改部门数据" + dept);
       //修改数据
        deptService.update(dept);
        return Result.success();
    }

}
